#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
运行宠物用品添加功能测试的脚本
"""
import os
import sys
import time
import pytest
from datetime import datetime

# 获取项目根目录
current_dir = os.path.dirname(os.path.abspath(__file__))
project_root = current_dir
sys.path.insert(0, project_root)

if __name__ == "__main__":
    # 获取当前时间戳
    timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
    
    # 设置报告文件名
    report_file = f"tests/reports/add_product_test_report_{timestamp}.html"
    
    # 设置日志文件名
    log_file = f"logs/add_product_test_{timestamp}.log"
    
    # 确保日志目录存在
    os.makedirs("logs", exist_ok=True)
    
    # 确保报告目录存在
    os.makedirs("tests/reports", exist_ok=True)
    
    # 构建pytest命令行参数
    args = [
        "-v",  # 详细输出
        "--tb=native",  # 更详细的错误追踪
        "--capture=no",  # 允许打印输出到控制台
        "tests/test_cases/test_add_product.py::TestAddProduct::test_add_product_basic",  # 先只运行基本测试
        f"--html={report_file}",  # HTML报告
        f"--log-file={log_file}",  # 日志文件
        "--log-file-level=DEBUG",  # 日志级别设为DEBUG，记录更多信息
    ]
    
    # 运行测试
    print(f"开始运行宠物用品添加测试，报告将生成在: {report_file}")
    result = pytest.main(args)
    
    # 如果基本测试成功，再运行其他测试
    if result == 0:
        print("基本测试成功，继续运行其他测试...")
        
        # 更新时间戳
        timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
        report_file = f"tests/reports/add_product_full_test_report_{timestamp}.html"
        log_file = f"logs/add_product_full_test_{timestamp}.log"
        
        # 构建完整测试的命令行参数
        full_args = [
            "-v",  # 详细输出
            "--tb=native",  # 更详细的错误追踪
            "--capture=no",  # 允许打印输出到控制台
            "tests/test_cases/test_add_product.py",  # 运行所有添加商品测试
            f"--html={report_file}",  # HTML报告
            f"--log-file={log_file}",  # 日志文件
            "--log-file-level=DEBUG",  # 日志级别设为DEBUG，记录更多信息
        ]
        
        pytest.main(full_args)
        print(f"所有测试完成，完整报告已生成: {report_file}")
        print(f"完整日志已保存: {log_file}")
    else:
        print("基本测试失败，请检查错误并修复后再运行完整测试。")
        print(f"查看日志文件获取详细错误信息: {log_file}")
    
    print(f"测试完成，报告已生成: {report_file}")
    print(f"日志已保存: {log_file}") 